package com.yc.cloud.openai.dto.resp.aigc;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
public class StableDiffusionGenerateResp {

    @JsonProperty("images")
    private List<String> images;
//    @JsonProperty("parameters")
//    private ParametersDTO parameters;
    @JsonProperty("info")
    private String info;

    @NoArgsConstructor
    @Data
    public static class ParametersDTO {
        @JsonProperty("prompt")
        private String prompt;
        @JsonProperty("negative_prompt")
        private String negativePrompt;
        @JsonProperty("styles")
        private Object styles;
        @JsonProperty("seed")
        private Integer seed;
        @JsonProperty("subseed")
        private Integer subseed;
        @JsonProperty("subseed_strength")
        private Integer subseedStrength;
        @JsonProperty("seed_resize_from_h")
        private Integer seedResizeFromH;
        @JsonProperty("seed_resize_from_w")
        private Integer seedResizeFromW;
        @JsonProperty("sampler_name")
        private Object samplerName;
        @JsonProperty("scheduler")
        private Object scheduler;
        @JsonProperty("batch_size")
        private Integer batchSize;
        @JsonProperty("n_iter")
        private Integer nIter;
        @JsonProperty("steps")
        private Integer steps;
        @JsonProperty("cfg_scale")
        private Integer cfgScale;
        @JsonProperty("width")
        private Integer width;
        @JsonProperty("height")
        private Integer height;
        @JsonProperty("restore_faces")
        private Object restoreFaces;
        @JsonProperty("tiling")
        private Object tiling;
        @JsonProperty("do_not_save_samples")
        private Boolean doNotSaveSamples;
        @JsonProperty("do_not_save_grid")
        private Boolean doNotSaveGrid;
        @JsonProperty("eta")
        private Object eta;
        @JsonProperty("denoising_strength")
        private Object denoisingStrength;
        @JsonProperty("s_min_uncond")
        private Object sMinUncond;
        @JsonProperty("s_churn")
        private Object sChurn;
        @JsonProperty("s_tmax")
        private Object sTmax;
        @JsonProperty("s_tmin")
        private Object sTmin;
        @JsonProperty("s_noise")
        private Object sNoise;
        @JsonProperty("override_settings")
        private Object overrideSettings;
        @JsonProperty("override_settings_restore_afterwards")
        private Boolean overrideSettingsRestoreAfterwards;
        @JsonProperty("refiner_checkpoint")
        private Object refinerCheckpoint;
        @JsonProperty("refiner_switch_at")
        private Object refinerSwitchAt;
        @JsonProperty("disable_extra_networks")
        private Boolean disableExtraNetworks;
        @JsonProperty("firstpass_image")
        private Object firstpassImage;
        @JsonProperty("comments")
        private Object comments;
        @JsonProperty("enable_hr")
        private Boolean enableHr;
        @JsonProperty("firstphase_width")
        private Integer firstphaseWidth;
        @JsonProperty("firstphase_height")
        private Integer firstphaseHeight;
        @JsonProperty("hr_scale")
        private Integer hrScale;
        @JsonProperty("hr_upscaler")
        private Object hrUpscaler;
        @JsonProperty("hr_second_pass_steps")
        private Integer hrSecondPassSteps;
        @JsonProperty("hr_resize_x")
        private Integer hrResizeX;
        @JsonProperty("hr_resize_y")
        private Integer hrResizeY;
        @JsonProperty("hr_checkpoint_name")
        private Object hrCheckpointName;
        @JsonProperty("hr_sampler_name")
        private Object hrSamplerName;
        @JsonProperty("hr_scheduler")
        private Object hrScheduler;
        @JsonProperty("hr_prompt")
        private String hrPrompt;
        @JsonProperty("hr_negative_prompt")
        private String hrNegativePrompt;
        @JsonProperty("force_task_id")
        private Object forceTaskId;
        @JsonProperty("sampler_index")
        private String samplerIndex;
        @JsonProperty("script_name")
        private Object scriptName;
        @JsonProperty("script_args")
        private List<?> scriptArgs;
        @JsonProperty("send_images")
        private Boolean sendImages;
        @JsonProperty("save_images")
        private Boolean saveImages;
        @JsonProperty("infotext")
        private Object infotext;

    }
}
